package group32.client;

import java.util.ArrayList;

import group32.shared.Relation;

import com.google.gwt.user.client.rpc.AsyncCallback;

public interface PhotoServiceAsync {
	void getUserPhotos(int userID, AsyncCallback<Relation> callback) throws IllegalArgumentException;
	void getPhoto (int photoID, AsyncCallback<Relation> callback) throws IllegalArgumentException;
	void changeDescription (String photoID, String description, AsyncCallback callback) throws IllegalArgumentException;
	void getUserCircles(int userID, AsyncCallback<Relation> callback) throws IllegalArgumentException;
	void getUserFriends(int userID, AsyncCallback<Relation> callback) throws IllegalArgumentException;
	void addPhoto(int userID, String url, String description, int everyone, ArrayList<Integer> circles, ArrayList<Integer> friends, AsyncCallback callback) throws IllegalArgumentException;
	void addTag(String tag, int photoID, int userID, AsyncCallback callback) throws IllegalArgumentException;
	void isVisible (int userID, int photoID, AsyncCallback<Boolean> callback) throws IllegalArgumentException;
	void scorePhoto (int userID, int photoID, AsyncCallback<Float> callback) throws IllegalArgumentException;
	void ratePhoto (int userID, int photoID, int scoreGiven, AsyncCallback callback) throws IllegalArgumentException;
	void getPhotoAvgRating (int photoID, AsyncCallback<Float> callback) throws IllegalArgumentException;
	void getPhotoSample(int userID, AsyncCallback<Relation> callback) throws IllegalArgumentException;
	void deletePhoto (int userID, int photoID, AsyncCallback callback) throws IllegalArgumentException;
}
